<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<body>

<script>
    // 1.promise可以封装异步操作

    // 1.1 查询用户
    // 1.2 查询用户课程
    // 1.3 查询课程分数

    /**
     * resolve : 调用成功执行的方法
     * reject : 调用失败执行的方法
     */
    // let p = new Promise((resolve, reject) => {
    //     $.ajax({
    //         url: 'mock/user.json',
    //         success(data) {
    //             console.log('查询用户:', data);
    //
    //             $.ajax({
    //                 url: `mock/user_corse_${data.id}.json`,
    //                 success(data) {
    //                     console.log("查询用户课程：", data);
    //
    //                     $.ajax({
    //                         url: `mock/corse_score_${data.id}.json`,
    //                         success(data) {
    //                             console.log("查询课程分数", data);
    //                         },
    //                         error(err) {
    //                             console.log(err);
    //                         }
    //                     });
    //                 },
    //                 error(err) {
    //                     console.log(err);
    //                 }
    //             });
    //         },
    //         error(err) {
    //             console.log(err);
    //         }
    //     })
    // })


    // //    方式2  then(data) : 方法调用成功后执行. data : resolve(data)方法中传入的值
    //     let promise = new Promise((resolve, reject) => {
    //             $.ajax({
    //                 url: 'mock/user.json',
    //                 success(data) {
    //                     console.log('查询用户:', data);
    //                     // 成功后调用
    //                     resolve(data);
    //                 },
    //                 error(err) {
    //                     console.log(err);
    //                     reject(err);
    //                 }
    //             })
    //         }).then((data) => {
    //             return new Promise((resolve, reject) => {
    //
    //                 $.ajax({
    //                     url: `mock/user_corse_${data.id}.json`,
    //                     success(data) {
    //                         console.log("查询用户课程：", data);
    //                         resolve(data);
    //                     },
    //                     error(err) {
    //                         console.log(err);
    //                     }
    //                 })
    //
    //             })
    //         }).then((data) => {
    //             return new Promise((resolve, reject) => {
    //
    //                 $.ajax({
    //                     url: `mock/corse_score_${data.id}.json`,
    //                     success(data) {
    //                         console.log("查询课程分数：", data);
    //                         resolve(data);
    //                     },
    //                     error(err) {
    //                         console.log(err);
    //                     }
    //                 })
    //             })
    //         });


    // 3.封装方法

    let get = (url, data) => {
        return new Promise((resolve, reject) => {
            $.ajax({
                url: url,
                data: data,
                success(result) {
                    resolve(result);
                },
                error(err) {
                    reject(err);
                }
            })
        })
    }

    /**
     * then((data) : data 对应 resolve(result)中result
     * catch((err) :err 对应 reject(err) 中err
     */
    get('mock/user.json').then((data) => {
        console.log("用户查询成功~~",data);
        return get(`mock/user_corse_${data.id}.json`,data)
    }).then(data => {
        console.log("查询用户课程~~~：", data);
        return get(`mock/corse_score_${data.id}.json`,data)
    }).then(data =>{
        console.log("查询课程分数~~~：", data);
    }).catch((err) =>{
        console.log('出现异常=>',err);
    })



</script>

</body>
</html>